home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- final class Bidi {
- private boolean ltr;
- private byte[] dirs;
- private byte[] levels;
- private int[] l2vMap;
- private int[] v2lMap;
- // $FF: renamed from: L byte
- static final byte field_0 = 0;
- // $FF: renamed from: R byte
- static final byte field_1 = 1;
- // $FF: renamed from: EN byte
- static final byte field_2 = 2;
- // $FF: renamed from: ES byte
- static final byte field_3 = 3;
- // $FF: renamed from: ET byte
- static final byte field_4 = 4;
- // $FF: renamed from: AN byte
- static final byte field_5 = 5;
- // $FF: renamed from: CS byte
- static final byte field_6 = 6;
- // $FF: renamed from: B byte
- static final byte field_7 = 7;
- // $FF: renamed from: S byte
- static final byte field_8 = 8;
- // $FF: renamed from: WS byte
- static final byte field_9 = 9;
- // $FF: renamed from: ON byte
- static final byte field_10 = 10;
- // $FF: renamed from: AR byte
- static final byte field_11 = 11;
- // $FF: renamed from: CM byte
- static final byte field_12 = 12;
- // $FF: renamed from: F byte
- static final byte field_13 = 13;
- static final char LRM = '\u200e';
- static final char RLM = '\u200f';
- static final char LRE = '\u202a';
- static final char RLE = '\u202b';
- static final char PDF = '\u202c';
- static final char LRO = '\u202d';
- static final char RLO = '\u202e';
- static final char NUMLEVELS = '\u0010';
- private static byte[] dirIndices = new byte[]{14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -124, 14, 18, 15, 16, 17, 18, 19, 20, 21, 22, 23, 14, 24, 25, 26, 27, 14, 28, 29, 30, -104, 14, 14, 2, 31, 32, 33, 34, 35, 36, 37, 38, 14, 39, 14, 40, 41, -106, 14, 8, 42, 43, 44, 45, 46, 47, 48, 49, -76, 14, -2, 2, -91, 2, 1, 50, -104, 14, -41, 2, 1, 51, -60, 2, 12, 52, 14, 53, 54, 55, 55, 56, 57, 58, 59, 60, 61};
- private static byte[] dirValues = new byte[]{-119, 10, 5, 8, 7, 8, 7, 7, -114, 10, -125, 7, 4, 8, 9, 10, 10, -125, 4, -123, 10, 5, 4, 6, 4, 6, 3, -118, 2, 1, 6, -122, 10, -102, 0, -122, 10, -102, 0, -91, 10, 2, 9, 10, -124, 4, -124, 10, 1, 0, -123, 10, 6, 4, 4, 2, 2, 10, 0, -125, 10, 2, 2, 0, -123, 10, -105, 0, 1, 10, -97, 0, 1, 10, -2, 0, -2, 0, 2, 0, 0, -124, 10, -98, 0, -72, 10, -39, 0, -121, 10, -119, 0, 2, 10, 10, -121, 0, -98, 10, -123, 0, -101, 10, -58, 12, -102, 10, 2, 12, 12, -110, 10, 2, 0, 0, -124, 10, 1, 0, -117, 10, 2, 0, 10, -125, 0, 3, 10, 0, 10, -108, 0, 1, 10, -84, 0, 1, 10, -121, 0, -125, 10, 8, 0, 10, 0, 10, 0, 10, 0, 10, -110, 0, -115, 10, -116, 0, 1, 10, -62, 0, 1, 10, -116, 0, 1, 10, -91, 0, -124, 12, -119, 10, -75, 0, 8, 10, 10, 0, 0, 10, 10, 0, 0, -125, 10, -100, 0, 2, 10, 10, -120, 0, 4, 10, 10, 0, 0, -73, 10, -90, 0, 2, 10, 10, -121, 0, 1, 10, -89, 0, 2, 10, 0, -121, 10, -111, 12, 1, 10, -105, 12, 1, 10, -125, 12, 7, 1, 12, 1, 12, 12, 1, 12, -117, 10, -101, 1, -123, 10, -123, 1, -105, 10, 1, 6, -114, 10, 1, 11, -125, 10, 2, 11, 10, -102, 11, -123, 10, -117, 11, -120, 12, -115, 10, -118, 5, 7, 4, 5, 5, 11, 10, 10, 12, -57, 11, 2, 10, 10, -123, 11, 1, 10, -113, 11, 1, 10, -122, 11, -113, 12, 5, 11, 11, 12, 12, 10, -124, 12, 2, 10, 10, -118, 2, -2, 10, -119, 10, 4, 12, 12, 0, 10, -75, 0, 3, 10, 10, 12, -124, 0, -120, 12, -124, 0, 4, 12, 10, 10, 0, -124, 12, -125, 10, -118, 0, 2, 12, 12, -115, 0, -112, 10, 4, 12, 0, 0, 10, -120, 0, 6, 10, 10, 0, 0, 10, 10, -106, 0, 1, 10, -121, 0, 2, 10, 0, -125, 10, -124, 0, 4, 10, 10, 12, 10, -125, 0, -124, 12, 9, 10, 10, 0, 0, 10, 10, 0, 0, 12, -119, 10, 1, 0, -124, 10, 3, 0, 0, 10, -125, 0, 4, 12, 12, 10, 10, -116, 0, 2, 4, 4, -121, 0, -121, 10, 3, 12, 10, 10, -122, 0, -124, 10, 4, 0, 0, 10, 10, -106, 0, 1, 10, -121, 0, 13, 10, 0, 0, 10, 0, 0, 10, 0, 0, 10, 10, 12, 10, -125, 0, 2, 12, 12, -124, 10, 4, 12, 12, 10, 10, -125, 12, -117, 10, -124, 0, 2, 10, 0, -121, 10, -118, 0, 2, 12, 12, -125, 0, -116, 10, 4, 12, 12, 0, 10, -121, 0, 3, 10, 0, 10, -125, 0, 1, 10, -106, 0, 1, 10, -121, 0, 4, 10, 0, 0, 10, -123, 0, 3, 10, 10, 12, -124, 0, -123, 12, 11, 10, 12, 12, 0, 10, 0, 0, 12, 10, 10, 0, -113, 10, 1, 0, -123, 10, -118, 0, -111, 10, 4, 12, 0, 0, 10, -120, 0, 6, 10, 10, 0, 0, 10, 10, -106, 0, 1, 10, -121, 0, 5, 10, 0, 0, 10, 10, -124, 0, 7, 10, 10, 12, 0, 0, 12, 0, -125, 12, -125, 10, 7, 0, 0, 10, 10, 0, 0, 12, -120, 10, 2, 12, 0, -124, 10, 3, 0, 0, 10, -125, 0, -124, 10, -117, 0, -111, 10, 3, 12, 0, 10, -122, 0, -125, 10, -125, 0, 1, 10, -124, 0, -125, 10, 7, 0, 0, 10, 0, 10, 0, 0, -125, 10, 2, 0, 0, -125, 10, -125, 0, -125, 10, -120, 0, 1, 10, -125, 0, -124, 10, 5, 0, 0, 12, 0, 0, -125, 10, -125, 0, 1, 10, -125, 0, 1, 12, -119, 10, 1, 0, -113, 10, -116, 0, -114, 10, -125, 0, 1, 10, -120, 0, 1, 10, -125, 0, 1, 10, -105, 0, 1, 10, -118, 0, 1, 10, -123, 0, -124, 10, -125, 12, -124, 0, 1, 10, -125, 12, 1, 10, -124, 12, -121, 10, 2, 12, 12, -119, 10, 2, 0, 0, -124, 10, -118, 0, -110, 10, 3, 0, 0, 10, -120, 0, 1, 10, -125, 0, 1, 10, -105, 0, 1, 10, -118, 0, 1, 10, -123, 0, -124, 10, 2, 0, 12, -123, 0, 9, 10, 12, 0, 0, 10, 0, 0, 12, 12, -121, 10, 2, 0, 0, -121, 10, 4, 0, 10, 0, 0, -124, 10, -118, 0, -110, 10, 3, 0, 0, 10, -120, 0, 1, 10, -125, 0, 1, 10, -105, 0, 1, 10, -112, 0, -124, 10, -125, 0, -125, 12, 2, 10, 10, -125, 0, 1, 10, -125, 0, 1, 12, -119, 10, 1, 0, -120, 10, 2, 0, 0, -124, 10, -118, 0, -111, 10, -80, 0, 3, 12, 0, 0, -121, 12, -124, 10, 1, 4, -121, 0, -120, 12, -115, 0, -91, 10, 13, 0, 0, 10, 0, 10, 10, 0, 0, 10, 0, 10, 10, 0, -122, 10, -124, 0, 1, 10, -121, 0, 1, 10, -125, 0, 9, 10, 0, 10, 0, 10, 10, 0, 0, 10, -124, 0, 3, 12, 0, 0, -122, 12, 6, 10, 12, 12, 0, 10, 10, -123, 0, 3, 10, 0, 10, -122, 12, 2, 10, 10, -118, 0, 4, 10, 10, 0, 0, -94, 10, -104, 0, 2, 12, 12, -101, 0, 5, 12, 0, 12, 0, 12, -124, 10, 2, 12, 12, -120, 0, 1, 10, -95, 0, -121, 10, -114, 12, 1, 0, -123, 12, 3, 0, 12, 12, -124, 0, -124, 10, -122, 12, 3, 10, 12, 10, -107, 12, -125, 10, -121, 12, 2, 10, 12, -26, 10, -90, 0, -118, 10, -89, 0, -124, 10, 1, 0, -124, 10, -38, 0, -123, 10, -60, 0, -123, 10, -46, 0, -122, 10, -100, 0, -124, 10, -38, 0, -122, 10, -106, 0, 2, 10, 10, -122, 0, 2, 10, 10, -90, 0, 2, 10, 10, -122, 0, 2, 10, 10, -120, 0, 7, 10, 0, 10, 0, 10, 0, 10, -97, 0, 2, 10, 10, -75, 0, 1, 10, -121, 0, 2, 10, 0, -125, 10, -125, 0, 1, 10, -121, 0, -125, 10, -124, 0, 2, 10, 10, -122, 0, -124, 10, -115, 0, -123, 10, -125, 0, 1, 10, -121, 0, -125, 10, -121, 9, 1, 6, -124, 9, 4, 10, 10, 0, 1, -104, 10, 8, 7, 7, 13, 13, 10, 13, 13, 10, -123, 4, -69, 10, 1, 2, -125, 10, -122, 2, 2, 4, 4, -125, 10, 1, 0, -118, 2, 2, 4, 4, -108, 10, -115, 4, -93, 10, -110, 12, -96, 10, 1, 0, -124, 10, 3, 0, 10, 10, -118, 0, 4, 10, 0, 10, 10, -122, 0, -122, 10, 6, 0, 10, 0, 10, 0, 10, -120, 0, 1, 10, -122, 0, -89, 10, -93, 0, -2, 10, -111, 10, 2, 4, 4, -2, 10, -92, 10, -59, 0, -27, 10, -68, 2, -50, 0, 1, 2, -107, 10, 1, 9, -123, 10, 2, 0, 0, -103, 10, -119, 0, -122, 12, -111, 10, -44, 0, -124, 10, 8, 12, 12, 10, 10, 0, 0, 10, 10, -34, 0, -122, 10, -88, 0, -124, 10, -34, 0, 1, 10, -112, 0, -32, 10, -99, 0, -125, 10, -92, 0, -100, 10, -100, 0, -125, 10, -78, 0, -113, 10, -116, 0, -124, 10, -81, 0, 1, 10, -9, 0, -124, 10, -29, 0, 2, 10, 10, -97, 0, 1, 10, -90, 0, -38, 10, -92, 0, -36, 10, -82, 0, -46, 10, -121, 0, -116, 10, -123, 0, -122, 10, 1, 12, -118, 1, 1, 4, -115, 1, 1, 10, -123, 1, 9, 10, 1, 10, 1, 1, 10, 1, 1, 10, -20, 1, -95, 10, -2, 1, -19, 1, -110, 10, -64, 1, 2, 10, 10, -74, 1, -88, 10, -116, 1, -92, 10, -124, 12, -84, 10, 6, 6, 10, 6, 10, 10, 6, -119, 10, 5, 4, 10, 10, 4, 4, -123, 10, 2, 4, 4, -123, 10, -125, 1, 3, 10, 1, 10, -2, 1, -119, 1, -122, 10, -125, 4, -123, 10, 5, 4, 6, 4, 6, 3, -118, 2, 1, 6, -122, 10, -102, 0, -122, 10, -102, 0, -118, 10, -71, 0, 2, 10, 10, -97, 0, -125, 10, -122, 0, 2, 10, 10, -122, 0, 2, 10, 10, -122, 0, 2, 10, 10, -125, 0, -125, 10, 2, 4, 4, -125, 10, 2, 4, 4, -103, 10};
-
- static {
- dirIndices = RLEUtilities.readRLE(dirIndices);
- dirValues = RLEUtilities.readRLE(dirValues);
- }
-
- Bidi(Bidi var1, int var2, int var3) {
- byte[] var4 = var1.dirs;
- byte[] var5 = createLineLevels(var4, var1.levels, var1.ltr, var2, var3);
- this.ltr = var1.ltr;
- this.dirs = null;
- this.levels = var5;
- }
-
- protected Bidi(byte[] var1, boolean var2) {
- this.ltr = var2;
- this.dirs = null;
- this.levels = var1;
- }
-
- Bidi(byte[] var1, byte[] var2, boolean var3) {
- applyBidiRules(var1, var2, var3);
- this.ltr = var3;
- this.dirs = var1;
- this.levels = var2;
- }
-
- Bidi(char[] var1) {
- this(var1, defaultIsLTR(var1, 0, var1.length));
- }
-
- Bidi(char[] var1, boolean var2) {
- this(var1, getEmbeddingArray(var1, var2), var2);
- }
-
- Bidi(char[] var1, byte[] var2, boolean var3) {
- byte[] var4 = getDirectionCodeArray(var1, var2);
-
- for(int var5 = 0; var5 < var2.length; ++var5) {
- if ((var2[var5] & 16) != 0) {
- var2[var5] = (byte)(var2[var5] & 15);
- var4[var5] = (byte)(var2[var5] & 1);
- }
- }
-
- applyBidiRules(var4, var2, var3);
- this.ltr = var3;
- this.dirs = var4;
- this.levels = var2;
- }
-
- static void applyBidiRules(byte[] var0, byte[] var1, boolean var2) {
- byte[] var3 = (byte[])var0.clone();
- resolveWeakTypes(var3, var1, var2);
- resolveNeutralTypes(var3, var1, var2);
- resolveImplicitLevels(var3, var0, var1, var2);
- }
-
- private static int[] computeContiguousOrder(int[] var0, int var1, int var2) {
- int[] var3 = new int[var2 - var1];
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- var3[var4] = var4 + var1;
- }
-
- for(int var5 = 0; var5 < var3.length - 1; ++var5) {
- int var6 = var5;
- int var7 = var0[var3[var5]];
-
- for(int var8 = var5; var8 < var3.length; ++var8) {
- if (var0[var3[var8]] < var7) {
- var6 = var8;
- var7 = var0[var3[var8]];
- }
- }
-
- int var9 = var3[var5];
- var3[var5] = var3[var6];
- var3[var6] = var9;
- }
-
- if (var1 != 0) {
- for(int var10 = 0; var10 < var3.length; ++var10) {
- var3[var10] -= var1;
- }
- }
-
- int var11;
- for(var11 = 0; var11 < var3.length && var3[var11] == var11; ++var11) {
- }
-
- if (var11 == var3.length) {
- return null;
- } else {
- return getInverseOrder(var3);
- }
- }
-
- static Bidi createBidi(char[] var0) {
- return new Bidi(var0);
- }
-
- Bidi createLineBidi(int var1, int var2) {
- byte[] var3 = new byte[var2 - var1];
- System.arraycopy(this.levels, var1, var3, 0, var3.length);
- if (this.dirs != null) {
- byte var4 = (byte)(this.ltr ? 0 : 1);
- int var5 = var3.length;
-
- while(true) {
- --var5;
- if (var5 < 0 || var3[var5] % 2 == var4 || this.dirs[var1 + var5] != 9) {
- break;
- }
-
- var3[var5] = var4;
- }
- }
-
- return new Bidi(var3, this.ltr);
- }
-
- static byte[] createLineLevels(byte[] var0, byte[] var1, boolean var2, int var3, int var4) {
- byte[] var5 = new byte[var4 - var3];
- System.arraycopy(var1, var3, var5, 0, var5.length);
- byte var6 = (byte)(var2 ? 0 : 1);
-
- for(int var7 = var4 - var3 - 1; var7 >= 0 && var5[var7] != var6 && var0[var3 + var7] == 9; --var7) {
- var5[var7] = var6;
- }
-
- return var5;
- }
-
- static int[] createVisualToLogicalMap(byte[] var0) {
- int var1 = var0.length;
- int[] var2 = new int[var1];
- byte var3 = 17;
- byte var4 = 0;
-
- for(int var5 = 0; var5 < var1; ++var5) {
- var2[var5] = var5;
- byte var6 = var0[var5];
- if (var6 > var4) {
- var4 = var6;
- }
-
- if ((var6 & 1) != 0 && var6 < var3) {
- var3 = var6;
- }
- }
-
- label59:
- for(; var4 >= var3; --var4) {
- int var10 = 0;
-
- while(true) {
- while(var10 >= var1 || var0[var10] >= var4) {
- int var7 = var10++;
- if (var7 == var0.length) {
- continue label59;
- }
-
- while(var10 < var1 && var0[var10] >= var4) {
- ++var10;
- }
-
- for(int var8 = var10 - 1; var7 < var8; --var8) {
- int var9 = var2[var7];
- var2[var7] = var2[var8];
- var2[var8] = var9;
- ++var7;
- }
- }
-
- ++var10;
- }
- }
-
- return var2;
- }
-
- static boolean defaultIsLTR(char[] var0, int var1, int var2) {
- while(var1 < var2) {
- char var3 = var0[var1++];
- byte var4 = getDirectionCode(var3);
- switch (var4) {
- case 0:
- return true;
- case 1:
- case 11:
- return false;
- case 13:
- return var3 == 8237 || var3 == 8234;
- }
- }
-
- return true;
- }
-
- static int[] getContiguousOrder(int[] var0) {
- return var0 != null ? computeContiguousOrder(var0, 0, var0.length) : null;
- }
-
- static byte getDirectionCode(char var0) {
- return dirValues[(dirIndices[var0 >> 7] << 7) + (var0 & 127)];
- }
-
- static byte[] getDirectionCodeArray(char[] var0, byte[] var1) {
- byte var2 = 10;
- byte var3 = -1;
- byte[] var4 = new byte[var0.length];
-
- for(int var5 = 0; var5 < var0.length; ++var5) {
- if (var1[var5] != var3) {
- var2 = 10;
- var3 = var1[var5];
- }
-
- char var6 = var0[var5];
- byte var7 = getDirectionCode(var6);
- switch (var7) {
- case 0:
- case 1:
- case 11:
- var2 = var7;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 8:
- case 9:
- case 10:
- default:
- break;
- case 7:
- var2 = 10;
- break;
- case 12:
- var7 = var2;
- break;
- case 13:
- var7 = 10;
- }
-
- var4[var5] = var7;
- }
-
- return var4;
- }
-
- static byte[] getEmbeddingArray(char[] var0, boolean var1) {
- byte[] var2 = new byte[var0.length];
- byte var3 = (byte)(var1 ? 0 : 1);
- byte var4 = var3;
- int var5 = 0;
- int var6 = 0;
- byte[] var7 = new byte[16];
- char[] var8 = new char[16];
-
- for(int var9 = 0; var9 < var0.length; ++var9) {
- char var10 = var0[var9];
- switch (var10) {
- case '\u202a':
- case '\u202d':
- if (var6 > 0) {
- ++var6;
- } else {
- byte var12 = (byte)((var4 & 14) + 2);
- if (var12 < 16) {
- var8[var5] = var10;
- var7[var5++] = var4;
- var2[var9] = var4;
- if (var10 == 8237) {
- var4 = (byte)(var12 + 16);
- } else {
- var4 = var12;
- }
- continue;
- }
-
- ++var6;
- }
- break;
- case '\u202b':
- case '\u202e':
- if (var6 > 0) {
- ++var6;
- } else {
- byte var11 = (byte)((var4 & 15) + 1 | 1);
- if (var11 < 16) {
- var8[var5] = var10;
- var7[var5++] = var4;
- var2[var9] = var4;
- if (var10 == 8238) {
- var4 = (byte)(var11 + 16);
- } else {
- var4 = var11;
- }
- continue;
- }
-
- ++var6;
- }
- break;
- case '\u202c':
- if (var6 > 0) {
- --var6;
- } else if (var5 > 0) {
- if (var9 < var0.length - 1 && var0[var9 + 1] == var8[var5 - 1]) {
- var2[var9] = var4;
- var2[var9 + 1] = var4;
- ++var9;
- continue;
- }
-
- --var5;
- var4 = var7[var5];
- }
- }
-
- var2[var9] = var4;
- }
-
- return var2;
- }
-
- static int[] getInverseOrder(int[] var0) {
- if (var0 == null) {
- return null;
- } else {
- int[] var1 = new int[var0.length];
-
- for(int var2 = 0; var2 < var0.length; var1[var0[var2]] = var2++) {
- }
-
- return var1;
- }
- }
-
- int getLength() {
- return this.levels.length;
- }
-
- int getLevelAt(int var1) {
- return this.levels[var1];
- }
-
- int getLevelLimit(int var1) {
- byte var2 = this.levels[var1];
-
- do {
- ++var1;
- } while(var1 < this.levels.length && this.levels[var1] == var2);
-
- return var1;
- }
-
- byte[] getLevels() {
- return this.levels;
- }
-
- int[] getLogicalToVisualMap() {
- if (this.l2vMap == null) {
- this.l2vMap = getInverseOrder(this.getVisualToLogicalMap());
- }
-
- return this.l2vMap;
- }
-
- static int[] getNormalizedOrder(int[] var0, byte[] var1, int var2, int var3) {
- if (var0 != null) {
- if (var2 == 0 && var3 == var0.length) {
- return var0;
- } else {
- boolean var4;
- boolean var5;
- byte var6;
- if (var1 == null) {
- var6 = 0;
- var4 = true;
- var5 = true;
- } else if (var1[var2] == var1[var3 - 1]) {
- var6 = var1[var2];
- var5 = (var6 & 1) == 0;
-
- int var7;
- for(var7 = var2; var7 < var3 && var1[var7] >= var6; ++var7) {
- if (var5) {
- var5 = var1[var7] == var6;
- }
- }
-
- var4 = var7 == var3;
- } else {
- var4 = false;
- var6 = 0;
- var5 = false;
- }
-
- if (!var4) {
- return computeContiguousOrder(var0, var2, var3);
- } else if (var5) {
- return null;
- } else {
- int[] var10 = new int[var3 - var2];
- int var8;
- if ((var6 & 1) != 0) {
- var8 = var0[var3 - 1];
- } else {
- var8 = var0[var2];
- }
-
- if (var8 == 0) {
- System.arraycopy(var0, var2, var10, 0, var3 - var2);
- } else {
- for(int var9 = 0; var9 < var10.length; ++var9) {
- var10[var9] = var0[var9 + var2] - var8;
- }
- }
-
- return var10;
- }
- }
- } else {
- return null;
- }
- }
-
- int[] getVisualToLogicalMap() {
- if (this.v2lMap == null) {
- this.v2lMap = createVisualToLogicalMap(this.levels);
- }
-
- return this.v2lMap;
- }
-
- boolean isDirectionLTR() {
- return this.ltr;
- }
-
- static void reorderVisually(byte[] var0, Object[] var1) {
- int var2 = var0.length;
- byte var3 = 17;
- byte var4 = 0;
-
- for(int var5 = 0; var5 < var2; ++var5) {
- byte var6 = var0[var5];
- if (var6 > var4) {
- var4 = var6;
- }
-
- if ((var6 & 1) != 0 && var6 < var3) {
- var3 = var6;
- }
- }
-
- label59:
- for(; var4 >= var3; --var4) {
- int var10 = 0;
-
- while(true) {
- while(var10 >= var2 || var0[var10] >= var4) {
- int var7 = var10++;
- if (var7 == var0.length) {
- continue label59;
- }
-
- while(var10 < var2 && var0[var10] >= var4) {
- ++var10;
- }
-
- for(int var8 = var10 - 1; var7 < var8; --var8) {
- Object var9 = var1[var7];
- var1[var7] = var1[var8];
- var1[var8] = var9;
- ++var7;
- }
- }
-
- ++var10;
- }
- }
-
- }
-
- static boolean requiresBidi(char var0) {
- if (var0 < 1425) {
- return false;
- } else if (var0 > 8238) {
- return false;
- } else {
- byte var1 = getDirectionCode(var0);
- return var1 == 1 || var1 == 11 || var1 == 13;
- }
- }
-
- private static void resolveImplicitLevels(byte[] var0, byte[] var1, byte[] var2, boolean var3) {
- byte var4 = (byte)(var3 ? 0 : 1);
- int var5 = var0.length;
- byte var6 = -1;
-
- for(int var7 = 0; var7 < var5; ++var7) {
- byte var8 = var2[var7];
- byte var9 = var8;
- switch (var0[var7]) {
- case 0:
- var9 = (byte)(var8 + 1 & 30);
- break;
- case 1:
- case 11:
- var9 = (byte)(var8 | 1);
- break;
- case 2:
- if ((var8 & 1) != 0) {
- var9 = (byte)(var8 + 1);
- } else if (var7 != 0 && var6 == var8) {
- byte var12 = var0[var7 - 1];
- if (var12 == 2) {
- var9 = var2[var7 - 1];
- } else if (var12 != 0) {
- var9 = (byte)(var8 + 2);
- }
- }
- case 3:
- case 4:
- case 6:
- case 9:
- case 10:
- default:
- break;
- case 5:
- var9 = (byte)((var8 & 14) + 2);
- break;
- case 7:
- case 8:
- var9 = var4;
-
- for(int var10 = var7 - 1; var10 >= 0 && var1[var10] == 9; --var10) {
- var2[var10] = var4;
- }
- }
-
- if (var9 != var8) {
- var2[var7] = var9;
- }
-
- var6 = var8;
- }
-
- for(int var11 = var5 - 1; var11 >= 0 && var1[var11] == 9; --var11) {
- var2[var11] = var4;
- }
-
- }
-
- private static void resolveNeutralTypes(byte[] var0, byte[] var1, boolean var2) {
- int var3 = 0;
- int var4 = var0.length;
-
- while(var3 < var4) {
- byte var5 = var1[var3];
- int var6 = (var5 & 1) == 0 ? 0 : 1;
-
- int var7;
- for(var7 = var3 + 1; var7 < var4 && var1[var7] == var5; ++var7) {
- }
-
- int var8 = var6;
- int var9 = var6;
-
- for(int var10 = var3 - 1; var3 < var7; ++var3) {
- byte var11 = var0[var3];
- switch (var11) {
- case 0:
- var8 = 0;
- continue;
- case 1:
- case 11:
- var8 = 1;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- default:
- continue;
- case 7:
- case 8:
- var8 = var6;
- continue;
- case 9:
- case 10:
- case 12:
- }
-
- if (var3 > var10) {
- var9 = var6;
- var10 = var3 + 1;
-
- label66:
- while(var10 < var7) {
- byte var12 = var0[var10];
- switch (var12) {
- case 0:
- var9 = var8 == 0 ? 0 : var6;
- break label66;
- case 1:
- case 5:
- case 11:
- var9 = var8 == 0 ? var6 : 1;
- break label66;
- case 2:
- var9 = var8;
- break label66;
- case 3:
- case 4:
- case 6:
- case 7:
- case 9:
- case 10:
- default:
- ++var10;
- break;
- case 8:
- var9 = var6;
- break label66;
- }
- }
- }
-
- var0[var3] = (byte)var9;
- }
- }
-
- }
-
- private static void resolveWeakTypes(byte[] var0, byte[] var1, boolean var2) {
- int var3 = 0;
- int var4 = 0;
-
- while(var4 < var0.length) {
- for(byte var5 = var1[var4++]; var4 < var0.length && var1[var4] == var5; ++var4) {
- }
-
- int var6 = -1;
- byte var7 = var0[var3];
-
- byte var10;
- for(boolean var8 = var7 == 11; var3 < var4; var7 = var10) {
- int var9 = var3 + 1;
- var10 = var9 == var4 ? -1 : var0[var9];
- if (var10 == 2 && var8) {
- var10 = 5;
- }
-
- int var11;
- var11 = var7;
- label87:
- switch (var7) {
- case 0:
- case 1:
- var8 = false;
- case 2:
- case 5:
- case 7:
- case 8:
- case 9:
- case 10:
- default:
- break;
- case 3:
- if (var6 == 2 && var10 == 2) {
- var11 = 2;
- break;
- }
-
- var11 = 10;
- break;
- case 4:
- if (var6 != 2 && var10 != 2) {
- if (var10 == 4 && !var8) {
- for(int var12 = var9 + 1; var12 < var4; ++var12) {
- byte var13 = var0[var12];
- if (var13 != 4) {
- int var14;
- for(var14 = var13 == 2 ? 2 : 10; var9 < var12; var0[var9++] = (byte)var14) {
- }
-
- var11 = var14;
- var10 = var13;
- break label87;
- }
- }
- } else {
- var11 = 10;
- }
- } else {
- var11 = 2;
- }
- break;
- case 6:
- if (var6 == 2 && var10 == 2) {
- var11 = 2;
- } else {
- if (var6 == 5 && var10 == 5) {
- var11 = 5;
- break;
- }
-
- var11 = 10;
- }
- break;
- case 11:
- var8 = true;
- }
-
- var0[var3] = (byte)var11;
- var3 = var9;
- var6 = var11;
- }
- }
-
- }
- }
-